Skip to content

feat(validate): EARS grammar findings + project glossary lexicon (FR-042/FR-044)#10

Merged
kreneskyp merged 5 commits into
mainfrom
ears-grammar-cli
Jun 24, 2026
Merged

feat(validate): EARS grammar findings + project glossary lexicon (FR-042/FR-044)#10
kreneskyp merged 5 commits into
mainfrom
ears-grammar-cli

Conversation

@kreneskyp

Copy link
Copy Markdown
Contributor

Surfaces the EARS requirement-grammar conformance work in quire-cli's validate subcommand, matching the engine (quire-rs v0.11.0) and quoin.

What

  • feat(validate): surface EARS grammar findings + --summary (FR-042) — validate now reports EARS grammar findings; --summary aggregates them.
  • feat(validate): harvest project glossary + inject combined lexicon (FR-044) — harvests the project glossary and injects the combined lexicon into validation.
  • perf(validate): scope FR-044 glossary harvest — avoids a full-corpus parse.

Notes

  • Already pins quire-rs at tag v0.11.0.
  • Part of the coordinated FR-040/041/042/043/044 release cycle.

🤖 Generated with Claude Code

Agent IX and others added 3 commits June 22, 2026 22:48
quire-rs now emits requirement-grammar (EARS) findings as advisory
validation warnings; `validate` prints them inline like any warning
(`[ears:<check>] …`). Add `--summary`: a doc-level conformance line +
per-check finding histogram on stderr (advisory; never changes the exit
code). `--strict` escalates EARS warnings to a failing exit — the
per-repo promotion lever for adopting EARS as a gate.

Tests: advisory+summary path and --strict escalation over a new
FR-ears-warn fixture (iso module, grammar_ref: iso-spec-core).

NOTE: runtime EARS findings require quire-rs with FR-042 (the grammar
engine). The new tests pass only against that engine — this branch is
release-coupled to the quire-rs FR-042 tag bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…R-044)

`validate` now harvests the --scope repo's project Ubiquitous-Language terms
(quire_rs::glossary_terms over the scope Spec) and validates each file with the
combined module∪project lexicon (validate_document_in_registry_with_lexicon).
A repo's own Glossary terms are accepted as concrete in its grammar check.

Verified e2e: `shall provide a widget` flags vague without a glossary,
suppressed once a Glossary defines `widget`.

NOTE: release-coupled to quire-rs FR-044 (held until the engine tag bump).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Use quire_rs::glossary_terms_from_path(&scope) instead of building a whole
Spec per validate invocation — the harvest now parses only glossary-bearing
docs. Still held (release-coupled to quire-rs FR-044).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kreneskyp kreneskyp requested a review from a team as a code owner June 24, 2026 12:25
Agent IX and others added 2 commits June 24, 2026 06:26
quire-cli statically links quire-rs, which relicensed to AGPL-3.0-or-later
after v0.11.0. Bump the engine pin to v0.12.0 (brings the FR-042 EARS grammar
and FR-043/044 lexicon API the validate command now uses) and relicense
quire-cli to match: LICENSE -> AGPL, Cargo.toml license field, README, and
allow AGPL-3.0-or-later in deny.toml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ecked_ops)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kreneskyp kreneskyp merged commit 475155c into main Jun 24, 2026
3 checks passed
@kreneskyp kreneskyp deleted the ears-grammar-cli branch June 24, 2026 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant